package com.isoftstone.demo.workflow.service;

import java.util.Map;

import javax.servlet.http.HttpServletResponse;

import org.activiti.engine.repository.Model;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.util.MultiValueMap;

import com.fasterxml.jackson.databind.node.ObjectNode;
import com.isoftstone.services.base.entity.User;


public interface WorkflowService {

	/**
	 * 获取模型列表（分页 ）
	 * @param category 模型分类
	 * @param pageable
	 * @return
	 */
	public Map<String,Object> getModelList(String category,Pageable pageable);
	
	/**
	 * 创建模型
	 * @param name 模块名称
	 * @param Key 模块标识
	 * @param description 描述
	 * @param category 流程分类
	 * @param user 流程创建者
	 * @return
	 * @author majintao
	 * @throws Exception
	 */
	public Model Creat(String name,String Key,String description,String category,User user) throws Exception;
	
	/**
	 * 
	 * @param modelId
	 * @return
	 * @author majintao
	 */
	public ObjectNode getEditorJson(String modelId);
	
	/**
	 * 保存模型
	 * @param modelId 模型id
	 * @param values 相关数据
	 * @author majintao
	 */
	public void saveEditorJson(String modelId,MultiValueMap<String, String> values);
	
	/**
	 * 导出model的xml文件
	 * @param modelId
	 * @author majintao
	 */
	public void export(String modelId,HttpServletResponse response);
	
	/**
	 * 删除模型
	 * @param modelId
	 * @author majintao
	 */
	public void delete(String modelId);
	
	/**
	 * 部署模型
	 * @param modelId
	 * @author majintao
	 */
	public void deploy(String modelId);
}
